package cn.thinkluck.principles.liskov_substitution;

/**
 * @Author liutao
 * @DateTime 2024/6/23 下午10:10
 * 父类引用指向子类对象，针对父类的任何调用，必须保证原来的逻辑不改变
 * 违反里氏替换的例子
 */
public class Client {

    public static void main(String[] args) {
        flyCompetition(new Swallow());
        /*
          企鹅不能飞，在参加飞翔比赛时，调用鸟类的飞翔方法，改变了器原有的逻辑
          违反了里氏替换原则
         */
        flyCompetition(new Penguin());
    }

    /**
     * 飞翔比赛
     *
     * @param bird 鸟类
     */
    public static void flyCompetition(Bird bird) {
        bird.fly();
    }
}
